home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
scope
/
151-175
/
scopedisk161
/
fixdisk1.2
/
fixdisk.doc
< prev
next >
Wrap
Text File
|
1995-03-19
|
12KB
|
264 lines
FixDisk V1.2
(C) Copyright Werner Guenther 1990
Freeware
USE THIS PROGRAM AT YOUR OWN RISK
FixDisk is a program to recover as much as possible from a defective disk.
I don't claim it is better than Diskdoctor or DiskSalv, but it has some
features the others don't have:
It can recover damaged (unreadable) tracks. It has functions to check
file integrity, to check the directory structure and functions to undelete,
copy or show (even defective) files and fix corrupted directory pointers.
A damaged file structure can be recovered copying the data file by file
to another disk (a la DiskSalv) or can be fixed in place (like Diskdoctor).
Everything can be selected with an intuition interface, so users can
determine what action should be take place.
Now the bad news: The program does not keep track of loose blocks, those
files without a file header, as DiskSalv does.
It doesn't process partitions > 48Mb.
USAGE
After starting FixDisk from CLI or Workbench, you will see a set of
gadgets with the available drives on the top of the window. Choose the
desired drive by clicking its gadget. If the chosen drive is a 3.5" or a
5.25" drive, you will be asked to insert a disk. Now the program starts to
read in the disk, cylinder by cylinder, searching for file/directory
headers. This may take a while, so be patient.
You may be told of read errors and other messages at this point:
- Block 0 has to start with `DOS' or `KICK'. If it does not, you are
asked if you want to fix it.
- The program couldn't find the root block and FixDisk wants to build a
new one.
- The disk isn't validated and the program will validate it.
- There is no root block and no file header on the disk, meaning the
disk is probably a custom disk or the Kickstart disk. FixDisk won't check
anything and won't let you check, change or fix anything except read errors.
You may press break (CTRL-C) if you want to abort this operation. When
the disk has been examined, you'll get a file requester on the left half of
the window. The first column shows the key, the block number where the file
header has been found, followed by DEL for deleted files or '-->' followed
by the file name. Red (color 3) entries are directories. Click on the
file name to select it or shift-click for multiple selections. Double-click
a directory to enter the directory.
The right half of the window is filled with 17 gadgets. Some of them are
disabled at startup. These gadgets will write onto the disk. To enable them,
choose "Write enable" from the Miscellaneous menu.
THE GADGETS:
Scan mode - ALL
Tells FixDisk to read the entire disk, cylinder by cylinder. This is
the safest way of operation and makes sure you get any fileheader on
the disk. It is used if the disk is heavily damaged, or if you want
to undelete/recover all deleted files.
Scan mode - Directory
This is much faster than the previous one. It builds up the disk
structure by following the hash chains, i.e. by reading the directory.
Use this one for smaller problems like a 'key already set' error.
Scan mode - Deleted
Similar to 'Scan mode - All' but somewhat optimised to find
fileheaders. You may enter a filename to search for, if you wish.
Scan mode - Specify
Used to find deleted files. Lets you specify which cylinders to scan,
in case you already know where the fileheader was. The usual trick is
to type 'list keys' and to look where other files with the same date
are stored and to scan the cylinders in the vicinity.
Directory - Parent
This gadget is part of the file requester. The requester will show files
from the parent directory.
Directory - Root
Same as above, but steps to the root directory.
Show - Selected
Shows a file in Hex or ASCII. Like all other commands, the file is
processed without using DOS, but each sector (block) is read, checked and
displayed. It works just as "Copy" does (see below), so you can use this
function to see what exactly can be recovered from a defective file. If
the file is on a 'Standard Filesystem' (non FFS) disk, you will be asked
from where the program should take the file links. Each block that
belongs to a file is listed in the file header block and in one or more
"file list blocks" if the file is too large. On the "Standard Filesystem,"
each data block has a pointer to the next block belonging to the same file.
So there are two ways to determine how the file is built: using the links
listed in the file header, or using the inter-block links. It is much safer
if you select the file header links, since if only one block is wrong,
you'll get rubbish using the inter-block links.
Check Files - Selected
This function checks the selected files. With the standard filesystem it
is easy to determine if a file is good or defective, as each data block
has a checksum, a pointer to the file header, pointer to the next block,
etc. This is not the case with the FFS and there is no way to determine
if a given data block really belongs to that file. So even if the file
passes the test, it may still be corrupt.
Check Files - Deleted Checks
only deleted files, so you can see which one can be undeleted.
Check Files - All
Checks all files.
Undelete Files - Selected
This function first calls "check file." If the file seems to be OK, the
file header is inserted into the hash chain of its parent directory and
the bitmap is updated, but the "Bitmap Flag" changes to FALSE, just to
make sure the disk is validated after this operation.
Undelete Files - All
Tries to undelete all deleted files.
Copy Files - Selected
Works like "Show" (see above). You'll be asked to enter an output
path/directory. If the directory fills, you may enter a new path. If a
given file already exists in the destination directory, the program will
append ".2" to the filename (if .2 exists too, you'll get .2.2. (Don't
tell me this is dumb, I know that already.) As with "Check File," you may
get some error messages while the program is working. If a block doesn't
seem to belong to a given file, you'll be asked to "SKIP IGNORE ABORT."
Skip means the damaged block won't be copied, Ignore the block will be
copied, no matter what is on that block, Abort leaves "Copy Files."
Protection bits are preserved, dates are not.
Copy Files - All
Copies the entire disk, trying to recover as much as possible.
Wipe Files - Selected
This function clears the file header of a deleted file. Utilities like
Diskdoctor and DiskSalv will try to recover all files, even if they have
been deleted. If you don't want some files to pop up again using one of
the programs above, you may use this function. Be warned: After this
operation you'll have to use a disk-monitor/sector-editor to get the data
back.
Wipe Files - Deleted
Purges all deleted files.
Delete - Selected
Deletes a file, i.e. the file header will be taken out of its hash chain,
and the bitmap updated. The 'Bitmap Flag' will be set to FALSE as in
"Undelete" (see above). This function even works if the DOS delete does
return an error.
Delete - Faulty
Checks all files and deletes those with errors. The program may ask you
before deleting a file, if you wish.
Info - Device
Returns some information about the selected device.
Validate - Disk
This is not the Amiga validator but my own. The main difference between
them is that this one tries to repair the disk structure. You may get
some error reports: loops in a hash chain, wrong or unreadable file
headers, checksum errors or "key already set," two files claiming to own
the same data block. You will be informed about any error and prompted
before FixDisk attempts to fix it.
Rename - Selected
Rename a selected file.
Recover - Track
Tries to recover tracks with read/write errors on floppy disks. It uses
the RAWREAD command from the trackdisk.device and therefore works with
the trackdisk.device only. It will RAWREAD the track into a buffer,
search the syncs and decode the sectors. If a sector sync is missing, the
program tries to determine where the sector has to start. When the track
has been decoded, you'll get a window displaying: the number of the
sector (1-11), the first four longwords of that sector, if the checksum
is OK or BAD, and if that block is ALLOCated or FREE. If an entries is
red (color 3), the sector didn't have a sync. If instead of the first few
bytes you get "unreadable," the program couldn't even work out where the
sector should have been. If you are not satisfied with the result, you
may click RETRY to restart the procedure and usually get a different
result. If you think the result is good enough, click on WRITE. This will
format the track and write those sectors back. If the track has a hard
error, i.e. a damaged surface, it may happen that the track can't be
formatted. Click RETRY several times and the defective part of the track
may fall into the gap at some point. If this doesn't seem to work, select
SAVE from the requester and save the track to a file. Now exit FixDisk,
backup the disk and restart FixDisk using the backup. Select
Recover-Track and click LOAD from the requester, filling the buffer with
the data from the original disk. After selecting WRITE again, the track
should be recovered.
Gadgets on the "Recover - Track" requester:
RETRY
read and decode the same track again.
WRITE
reformat the track an write the data back to the disk.
NEXT / NEW
FixDisk builds a list of unreadable tracks. "NEXT" steps to the
next damaged track on the list. If the list is empty, the gadget
will display "NEW" instead.
FIND
Searches a pattern anywhere in the buffer. Useful if you know the
first few bytes of a sector (which is quite easy to determine on a
standard file system disk).
SAVE
Save the decoded track to a file.
LOAD
Read a decoded track from a file into the buffer.
CANCEL
Quit 'Recover - Track' and return to FixDisk's main window.
The window displaying the sectors has several gadgets too:
LEFT ARROW
If a sector sync mark is missing, FixDisk will compute the position
of that sector within the buffer and decode the sector from this
point. You may manually correct this position using the arrow
gadgets. The left arrow will shift the starting position one BIT
(not byte) to the left.
RIGHT ARROW
Shift sector one bit to the right.
NUMERIC STRING GADGET
the string gadget will display the position of the sector relative
FixDisk assumption.
SECTOR DATA
clicking onto the sector data area will 'lock' the sector, i.e.
will prevent FixDisk from redecoding this sector when using
RETRY from the requester.
THE MENU
There are actually only two menu items:
Ignore Readerrors
Usually you get a requester asking RETRY IGNORE if an error occurs. This
may be annoying if the disk has many defective tracks. This item will
stop that requester popping up. It has also a second function. If you are
using the "Copy" function, the program will stop every time a file seems
to be damaged and ask what action should be taken. With "Ignore
readerrors" on, errors are just listed, but the program will act as if
you have chosen IGNORE.
Write Enable
Enables those gadgets that will write onto the disk.
That's all. Well, almost. The program has about 80 requesters, some of
them have not been explained, but they should be self-explanatory.
Send flames, bug reports, requests to
G35@DHDURZ1.BITNET
Werner Guenther
Wingertspfad 12
D 6900 Heidelberg (FRG)